package com.annotation;

import java.lang.annotation.*;

/**
 * @Retention: 注解的保留策略：
 * 　　@Retention(RetentionPolicy.SOURCE)   // 注解仅存在于源码中，在class字节码文件中不包含
 * 　　@Retention(RetentionPolicy.CLASS)    // 默认的保留策略，在class字节码文件中存在，但运行时无法获得
 * 　　@Retention(RetentionPolicy.RUNTIME)  // 注解会在class字节码文件中存在，在运行时可以通过反射获取到
 *
 * @Target: 注解的作用目标：
 * 　　@Target(ElementType.TYPE)             // 接口、类、枚举、注解
 * 　　@Target(ElementType.FIELD)            // 字段、枚举的常量
 * 　　@Target(ElementType.METHOD)           // 方法
 * 　　@Target(ElementType.PARAMETER)        // 方法参数
 * 　　@Target(ElementType.CONSTRUCTOR)      // 构造函数
 * 　　@Target(ElementType.LOCAL_VARIABLE)   // 局部变量
 * 　　@Target(ElementType.ANNOTATION_TYPE)  // 注解
 * 　　@Target(ElementType.PACKAGE)          // 包
 *
 * @Documented: 注解包含在javadoc中
 * @Inherited: 注解继承
 */

@Documented
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface HelloWorld {
    String value() default "zhp";
    int age() default 28;
}
